package myjava.algorithm.leetcode;

public class StringtoInteger {
	public static int atoi(String str) {
		
		if(str == null) return 0;
		
		for(int i=0;i<str.length();i++)
		{
			if(str.charAt(i) != ' ')
			{
				str = str.substring(i);
				break;
			}
			if(i == str.length() - 1)
				str = "";
		}
		
		if(str.length() == 0) return 0;
		
		if(str.length() >=2 && str.charAt(0) == '+' && str.charAt(1) == '-') return 0;
		if(str.length() >=2 && str.charAt(0) == '-' && str.charAt(1) == '+') return 0;
		
		double result = 0;
		int sign = 1;
		
		if(str.charAt(0) == '-') sign = -1;
		
	
		
		for(int i=0;i<str.length();i++)
		{
			if(i==0 && str.charAt(i) == '-') continue;
			if(i==0 && str.charAt(i) == '+') continue;
			
			if(!(str.charAt(i) >= '0' && str.charAt(i) <= '9')) break;
					
			result = 10* result + (str.charAt(i) - '0');
		}
		

		if(sign == -1 && (result - 1)> Integer.MAX_VALUE ) return Integer.MIN_VALUE; 
		else if(sign == 1 && result > Integer.MAX_VALUE) return Integer.MAX_VALUE;
		
        return (int)(sign * result);
    }
	
	public static void main(String[] args) {
		System.out.println(atoi("-2147483648"));
	}
}
